#[derive(Debug, PartialEq, Clone)]
pub enum Token {
    Word(String),
    Boolean(bool),
    Integer(i32),
    Real(f32),
    String(String),
    Begin(Delimiter),
    End(Delimiter),
    Params(Vec<String>),
    SingleQuote,
    Colon,
    EOF,
}

impl Token {
    #[inline]
    pub fn unselect_eof(self) -> Option<Token> {
        match self {
            Token::EOF => None,
            token => Some(token)
        }
    }
}

#[derive(Debug, Clone, Copy, PartialEq)]
pub enum Delimiter {
    Parenthesis,
    Bracket,
    Brace,
}